package clases.notas;

import CapaDatos.DataSource;
import CapaDatos.Sql;
import javax.swing.DefaultListModel;
import javax.swing.JComboBox;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Jose Daniel
 */
public class Curso {

    private DataSource dt= new DataSource();
    private String sql;

    public Curso() {
        dt = new DataSource();
    }

    public void listarCursoCombo(JComboBox cbo) {
        cbo.removeAllItems();
        //    cbo.addItem("Seleccione el curso");
        Sql.getConsulta("SELECT CONCAT(CURSO,' ',PARALELO) FROM CURSO JOIN PARALELO ON CURSO.IDPARALELO=PARALELO.IDPARALELO", dt);
        while (dt.next()) {
            cbo.addItem(dt.getString(1));
        }
        cbo.setSelectedIndex(-1);


    }
public void listarCursoActivoCombo(JComboBox cbo) {
        cbo.removeAllItems();
        cbo.addItem("--Seleccione--");
        sql = "SELECT CONCAT(CURSO,' ', PARALELO) FROM CURSO \n"
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO \n"
                + "WHERE IDCURSO IN (SELECT IDCURSO FROM PERIODOCURSO "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO \n"
                + "WHERE ESTADO=TRUE) "
                + "ORDER BY(CONCAT(CURSO,' ', PARALELO))";

        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            cbo.addItem(dt.getString(1));
        }
        cbo.setSelectedIndex(0);

    }
    public void listaMateriaAsignada(JComboBox cbo,String Curso) {
        sql = "SELECT MATERIA FROM MATERIA WHERE IDMATERIA IN (SELECT IDMATERIA \n"
                + "FROM MATERIAPERIODOCURSO WHERE IDPERIODOCURSO IN (SELECT IDPERIODOCURSO \n"
                + "FROM PERIODOCURSO JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO \n"
                + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO \n"
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO \n"
                + "WHERE CONCAT(CURSO,' ',PARALELO)='" + Curso + "' "
                + "AND ESTADO=TRUE)) ORDER BY(MATERIA)";
       cbo.removeAllItems();
       cbo.addItem("--Seleccione--"); 
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
          cbo.addItem(dt.getString(1));
        }
       
    }
    
        public void listaAlumnoCurso(JTable lista, DefaultTableModel modelo, String Curso) {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) FROM MATRICULA \n"
                + "JOIN MATRICULACURSO ON MATRICULACURSO.IDMATRICULA=MATRICULA.IDMATRICULA \n"
                + "JOIN PERIODOCURSO ON MATRICULACURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO \n"
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO \n"
                + "JOIN CURSO ON PERIODOCURSO.IDCURSO=CURSO.IDCURSO \n"
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO \n"
                + "JOIN ALUMNO ON MATRICULA.CEDULARUC=ALUMNO.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC \n"
                + "WHERE PERIODO.ESTADO=TRUE \n"
                + "AND CONCAT(CURSO,' ',PARALELO)='" + Curso + "'";
        Sql.getConsulta(sql, dt);
          
         String[] m = new String[25];
         int n=1;
        while (dt.next()) {
             m[0] = dt.getString(1);
             m[1] = Integer.toString(n);
             m[2]=  dt.getString(2);
             

              
             modelo.addRow(m);
           n++;  
        }
        lista.setModel(modelo);
    }
        
   public String getDocenteMateria(String curso,String materia){
   sql="SELECT CONCAT(PERSONA.APELLIDO,' ',PERSONA.NOMBRE) AS DOCENTE FROM PERSONA JOIN PERSONAL ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC JOIN MATERIADOCENTE \n" +
"ON PERSONA.CEDULARUC=MATERIADOCENTE.CEDULARUC\n" +
"WHERE(PERSONAL.CARGO='DOCENTE' AND PERSONAL.ESTADO='TRUE' AND\n" +
"IDMATERIAPERIODOCURSO= (SELECT IDMATERIAPERIODOCURSO FROM MATERIAPERIODOCURSO\n" +
"WHERE( MATERIAPERIODOCURSO.IDMATERIA=(SELECT IDMATERIA FROM MATERIA WHERE(MATERIA.MATERIA='"+materia+"')) AND\n" +
"MATERIAPERIODOCURSO.IDPERIODOCURSO=(SELECT IDPERIODOCURSO FROM CURSO JOIN PARALELO ON CURSO.IDPARALELO=PARALELO.IDPARALELO JOIN PERIODOCURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO\n" +
"WHERE( CONCAT(CURSO,' ',PARALELO)='"+curso+"' )) )) )";
   Sql.getConsulta(sql, dt);
   dt.next();
   return dt.getString(1);
   }



    public DefaultTableModel listarCursoTabla() {
//        DefaultTableModel modelo = new DefaultTableModel();
        DefaultTableModel modelo = new DefaultTableModel() {
        @Override
        public boolean isCellEditable(int fila, int columna) {
           return false; //Con esto conseguimos que la tabla no se pueda editar
        }
    };
        modelo.addColumn("codigo");
        modelo.addColumn("Nivel");
        modelo.addColumn("Curso");
   
        String[] m = new String[4];

        Sql.getConsulta("SELECT  CURSO.IDCURSO,CURSO,PARALELO,NOMBRE FROM PERIODO JOIN PERIODOCURSO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO JOIN\n"
                + "CURSO ON PERIODOCURSO.IDCURSO=CURSO.IDCURSO\n"
                + "WHERE(PERIODO.ESTADO='TRUE')", dt);
        while (dt.next()) {
            m[0] = dt.getString(1);
            m[1] = dt.getString(2) + " - " + dt.getString(3);
            m[2] = dt.getString(4);
            modelo.addRow(m);
        }
        return modelo;
    }

    public DefaultTableModel getAlumnos(String id) {
        Sql.getConsulta("SELECT PERSONA.CEDULARUC,CONCAT(PERSONA.APELLIDO,' ',PERSONA.NOMBRE) AS ALUMNO FROM MATRICULA JOIN PERSONA ON MATRICULA.CEDULARUC=PERSONA.CEDULARUC\n"
                + "WHERE(MATRICULA.IDPERIODOCURSO='" + id + "')", dt);
        DefaultTableModel modelo = new DefaultTableModel();
        modelo.addColumn("codigo");
        modelo.addColumn("Nivel");
         String[] m = new String[2];
             while (dt.next()) {
            m[0] = dt.getString(1);
            m[1] = dt.getString(2);
            modelo.addRow(m);
        }
        return modelo;

    }
}
